/*
 * Copyright (c) 2025 Industrial Software Feature Database
 */
package com.comac.ins.isfd.domain.vo;

import java.util.Date;

import com.comac.ins.isfd.domain.IsfdMetadata;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.comac.ins.common.excel.annotation.ExcelDictFormat;
import com.comac.ins.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;

import java.io.Serial;
import java.io.Serializable;


/**
 * 元数据信息视图对象 isfd_metadata
 *
 * @author Lion Li
 * @date 2024-06-14
 */
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = IsfdMetadata.class)
public class IsfdMetadataVo implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 唯一标识符
     */
    @ExcelProperty(value = "唯一标识符")
    private Long id;

    /**
     * 数据源名称
     */
    @ExcelProperty(value = "数据源名称")
    private String dataSourceName;

    /**
     * 数据源类型
     */
    @ExcelProperty(value = "数据源类型")
    private String dataSourceType;

    /**
     * 表名或数据集名称
     */
    @ExcelProperty(value = "表名或数据集名称")
    private String tableName;

    /**
     * 表格或数据集描述
     */
    @ExcelProperty(value = "表格或数据集描述")
    private String tableDescription;

    /**
     * 数据结构信息
     */
    @ExcelProperty(value = "数据结构信息")
    private String schemaInfo;

    /**
     * 数据条数
     */
    @ExcelProperty(value = "数据条数")
    private String recordCount;

    /**
     * 数据原文件名
     */
    @ExcelProperty(value = "数据原文件名")
    private String originalFileName;

    /**
     * 数据原文件ID
     */
    @ExcelProperty(value = "数据原文件ID")
    private Long originalFileId;

    /**
     * 数据解析规则ID
     */
    @ExcelProperty(value = "数据解析规则ID")
    private Long parsingRuleId;

    /**
     * 业务应用场景(1-结构CAE)
     */
    @ExcelProperty(value = "业务应用场景(1-结构CAE)")
    private String businessScenarioNo;

    /**
     * 业务应用场景名称
     */
    @ExcelProperty(value = "业务应用场景名称")
    private String businessScenarioName;

    /**
     * 数据存储类型(0-结构化，1-半结构化，2-非结构化)
     */
    @ExcelProperty(value = "数据存储类型(0-结构化，1-半结构化，2-非结构化)")
    private String storageType;

    /**
     * 数据存储位置
     */
    @ExcelProperty(value = "数据存储位置")
    private String storageLocations;

    /**
     * 要素数据分类（1-材料库）
     */
    @ExcelProperty(value = "要素数据分类", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "1=-材料库")
    private String elementDataType;

    /**
     * 要素数据分类名称
     */
    @ExcelProperty(value = "要素数据分类名称")
    private String elementDataName;

    /**
     * 要素库二级分类
     */
    @ExcelProperty(value = "要素库二级分类")
    private String elementLibrarySecondCategory;

    /**
     * 创建者
     */
    @ExcelProperty(value = "创建者")
    private String createdBy;

    /**
     * 创建时间
     */
    @ExcelProperty(value = "创建时间")
    private Date createdAt;

    /**
     * 最后修改者
     */
    @ExcelProperty(value = "最后修改者")
    private String lastModifiedBy;

    /**
     * 最后修改时间
     */
    @ExcelProperty(value = "最后修改时间")
    private Date lastModifiedAt;

    /**
     * 数据责任人
     */
    @ExcelProperty(value = "数据责任人")
    private String dataOwner;

    /**
     * 访问权限
     */
    @ExcelProperty(value = "访问权限")
    private String accessPermissions;

    /**
     * 数据保留周期（年）
     */
    @ExcelProperty(value = "数据保留周期", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "年=")
    private Long retentionPeriod;

    /**
     * 安全分类
     */
    @ExcelProperty(value = "安全分类")
    private String securityClassification;

    /**
     * 标签
     */
    @ExcelProperty(value = "标签")
    private String tags;

    /**
     * 相关系统
     */
    @ExcelProperty(value = "相关系统")
    private String relatedSystems;

    /**
     * 备注
     */
    @ExcelProperty(value = "备注")
    private String notes;

    /**
     * 状态
     */
    @ExcelProperty(value = "状态")
    private String status;

    /**
     * 数据质量指标
     */
    @ExcelProperty(value = "数据质量指标")
    private String dataQualityMetrics;


}
